<html>
<head>
	<title>Marginalia Change Log</title>
	<style type="text/css">
		ol li {
			margin: 1em 0 ;
		}
	</style>
</head>
<body>
<h1>Marginalia Change Log</h1>

<p>This change log includes changes to the stand-alone version of Marginalia and 
to the Moodle annotation implementation.  The combined format simplifies my job 
of keeping the log up-to-date, and reduces the change for error.  Note that most 
bug fixes etc. from the stand-alone version apply to the subsequent Moodle version 
release;  similarly, some fixes to the stand-alone version first appear in a Moodle 
release.</p>

<h2>Release Notes for 2007-08-06 (Moodle version)</h2>
<p>The Moodle version has long been out of synch with the Marginalia code base.
This is the first version to incorporate changes for OJS and Bungeni.  From Moodle's
point of view, most of these changes are internal and don't affect the behavior of
the application.</p>
<ul>
<li>Integration with Moodle 1.8 codebase.</li>
<li>Numerous refactorings and optimizations, including a new optimized database format
for ranges.  The Moodle version requires changes to the database, but is backward-compatible
with existing annotations in the old format (though they will be slower).</li>
<li>Added online help for annotation.</li>
<li>New Atom format is easier to read when subscribed to.</li>
<li>Moved summary page link from individual annotation margins to top of forum page.</li>
<li>Reduced patches to Moodle to make Marginalia support easier to maintain in future.</li>
</ul>

<h2>Release Notes for 2006-06-08 (Moodle version)</h2>
<ul>
<li>Remember the user whose annotations are displayed, rather than always resetting to
the current user.</li>
<li>Smartcopy can now be toggled by pressing Shift-Ctrl-S</li>
<li>Guest users are not permitted to annotate</li>
<li>An assortment of small fixes (especially for IE)</li>
<li>Add Smartcopy instructions to summary page;  minor display changes</li>
</ul>

<h2>Release Notes for 2006-05-12 (stand-alone version)</h2>
<ul>
<li>Firefox and IE were handling nonbreaking spaces differently.  This has been
remedied.  Both browsers now treat nbsp as a space character.  In addition, both
browsers would reduce multiple whitespace characters in annotated content to a
single space.  They no longer do this (although both browsers have some odd
built-in behavior in this regard).</li>
<li>IE could not handle an annotation highlight region beginning at the very
start of a post.  This is fixed.</li>
<li>Updated to the current hAtom specification.  This
may break existing applications as class names have changed, and the link to
an individual post on a page is now found using rel="bookmark" rather than the
class attribute.</li>
</ul>

<h2>Release Notes for 2006-02-24 (Moodle version)</h2>
<ul>
<li>Integrated with the Moodle 1.6 code base (version as of today).  I don't plan
to continue supporting Moodle 1.5.x.</li>
<li>Fixed the Atom link on the summary page.</li>
<li>Adopt current <a href="http://microformats.org/wiki/hatom">hAtom</a> specification</li>
</ul>

<h2>Release Notes for 2006-02-06 (Moodle and stand-alone)</h2>
<ul>
<li>Renamed the software to Marginalia;  this should make it easier to reference
and potentially also easier to find with web searches.</li>
</ul>

<h2>Release Notes for 2006-01-15 (Moodle version)</h2>

<ul>
<li>Update documentation files, which were slightly out-of-date</li>
<li>New columns were missing from tables.sql (though not from create-db.php)</li>
</ul>

<h2>Release Notes for 2006-01-07 (Moodle version)</h2>

<ul>
<li>Allow users to view others' annotations on forum pages, including
margin notes and highlighting.</li>
<li>Add ability to view a summary of all annotations for a course.</li>
<li>Complete (I hope) localization for summary page.</li>
<li>Speed up calculations used when annotation highlights are shown.</li>
<li>Store Moodle object IDs in database, thereby speeding up queries
(I was concerned about scalability with large numbers of annotations and
LIKE queries on the database).  <strong>Note:</strong> this requires that
the object_id and object_type columns columns be added to any existing 
database.  See create-db.php for details.</li>
<li>Remove buttons for teacher, author annotations, reverting to public/private 
access</li> 
</ul>

<h2>Release Notes for 2005-09-12 (Moodle and stand-alone)</h2>

<ul>
<li>The fix for forum ratings had introduced an IE bug.  This is resolved.</li>
<li>The size of the delete and sharing buttons are fixed, so that they won't be
too small for pages and Moodle themes with small default font sizes.</li>
</ul>

<h2>Release Notes for 2005-08-24 (Moodle version)</h2>

<p>Note that the database has changed a bit, although by default the new column isn't
required.  Logging settings are at the top of <kbd>annotation/config.js</kbd> and 
<kbd>annotation/lib.php</kbd>.</p>

<ul>
<li>Sharing buttons on the summary page.</li>
<li>Moodle logging</li>
<li>Eric Schewe's uninstall script.</li>
<li>Option to include user names in annotation-related URLs so they will be in the Apache log.</li>
<li>Option to mark deleted annotations instead of deleting them (useful for logging;  requires
new database column)</li>
</ul>

<h2>Release Notes for 2005-08-24 (stand-alone)</h2>

<p>This fixes a relatively rare bug which can cause Firefox trouble with certain kinds 
of selection ranges.  The bug causes text selections to vanish is soon as they are made;
if they don't vanish, creating annotations from them fails.</p>

<h2>Release Notes for 2005-08-23 (Moodle version)</h2>

<ul>
<li>Moodle URLs are stored in the database with the configuration-dependent part stripped.
This means there is no need to update the database if the site URL changes.</li>
<li>The summary page wasn't filtering displaying shared/private annotations correctly:
other users' annotations were always shown, even when "my annotations" was selected.
Note to the curious:  although the interface doesn't allow it, it is possible to view more
specific lists of annotations by editing the summary page URL (e.g. you can see only your
own private annotations, or the shared annotations of a specific user).</li>
</ul>

<h2>Release Notes for 2005-08-20 (Moodle version)</h2>

<p>There was an incompatibility between forum ratings and annotation which is
resolved in this release.</p>

<h2>Release Notes for 2005-08-19 (Moodle version)</h2>

<p>This release fixed a bug in the install procedure and a left-over dependency on
<kbd>mod_rewrite</kbd>.</p>

<h2>Release Notes for 2005-08-16 (Moodle version)</h2>

<p>This release focused on the quality of the summary paged code:</p>

<ul>
<li>Refactor the summary page to make it easy to add support for other Moodle modules.</li>
<li>Reintroduce Atom support, this time properly integrated with summary search.
I don't think this will actually work for anyone, however, since the feed reader
would need to be logged in to Moodle.</li>
<li>Fix authentication bugs for annotation update and delete (the operations would
fail, but spit out bad PHP error messages instead of failing nicely).</li>
<li>Hard-code the margin color.  I haven't yet worked out to integrate with Moodle's
theme system, and in some cases it was coming out bright green.</li>
</ul>

<h2>Release Notes for 2005-08-16 (stand-alone)</h2>

<ul>
<li>The Apache <kbd>mod_rewrite</kbd> dependency is now optional.  This
should make it easier for developers to install the code in different environments.
As important as I believe nice URLs are, the feature was creating too much complication 
for test installations.</li>
</ul>

<h2>Release Notes for 2005-08-08 (Moodle version)</h2>

<p>This release was primarily about integrating the latest stand-alone version
with Moodle, but it also included a number of important Moodle bug
fixes and some major features also.</p>

<ul>
<li>Add search capability to the summary page, including the ability to search
public annotations created by other users.</li>
<li>Create a permalink URL for each message that is not dependent on the forum
ID.  The permalink.php file redirects any request for that message to the correct
forum page.  This means that smartcopy links and annotations will not break
when a post is moved to a different forum (e.g. with the Split admin function).</li>
<li>Always display annotations in the summary, even if the associated post has
been deleted.  Annotations belong to their creator, not the author of the annotated 
resource.</li>
<li>Make the create annotation button light up in yellow - the same color as the
highlights - when the mouse is over it.  Doesn't work in IE.</li>
<li>Fix the height of the create annotation button in IE.</li>
<li>Remove the name of the author of the annotated resource from the summary page
(it was too cluttered).</li>
<li>Remove the RSS/Atom link from the summary page (its role was ambiguous and the
content of the feed did not match the search criteria for the page).</li>
<li>Delete a user's annotation when the user is deleted;  update annotations
appropriately when a username changes.</li>
<li>Generalize the summary page implementation, so that it's easy to support summaries 
if annotation support is added elsewhere in Moodle.</li>
</ul>

<h2>Release Notes for 2005-08-08 (stand-alone and Moodle)</h2>
<p>This release focused on bug fixes and edge cases:</p>

<ul>
<li>Optimize word counting.  Subjectively, I would say this produced about a
3-5x speedup for annotation creation and display.</li>
<li>When displaying annotations, detect changes to the document.  If the annotation
highlight no longer refers to the correct piece of text, don't display the highlight
or note and provide a visual indication that there's a problem.  In Moodle, this
links to a summary page showing the problem annotations.  This isn't visible on IE.</li>
<li>Fix a problem that sometimes caused notes to line up incorrectly with the
corresponding highlight region.</li>
<li>Use microformat-style abbr title for smartcopy dates.</li>
<li>Limit note and quote lengths to 250 and 1000 words respectively.</li>
<li>Deal correctly with cases in which users create post content containing
class names used by the application.  It should be impossible for a user to confuse
the annotation code by using specific HTML tags and class values.</li>
<li>Now that Atom is done, discard RSS 2 support.</li>
<li>Fix <kbd>Enter</kbd> to save annotations on IE.</li>
</ul>

<h2>Release Notes for 2005-07-28 (stand-alone version)</h2>

<p>This release involved important bug fixes and lots of new code, but had little 
impact on the interface:</p>

<ul>
<li>Internet Explorer and Firefox modify whitespace in HTML files.  This led to a difference 
in how they measured offsets, so that highlights created in one could be misplaced in the other.  I
replaced character offsets with word+character offsets.  This affects the database, the protocol,
and the internal implementation.  As a result, highlights drop leading and trailing whitespace.
This release is noticably slower due to the extra calculation involved (this may be
optimized in future versions).</li>

<li>Highlight <code>em</code> tags were being inserted around all text nodes within a highlighted
range.  This was incorrect:  some HTML elements, such as <code>tr</code> and <code>ul</code> do
not allow <code>em</code> as a child element.  The application now checks against the content
model for parent elements so that <code>em</code> tags are placed appropriately.</li>

<li>Creating annotations sometimes caused the browser to scroll away from the area where the
new annotation was created, which was very confusing.  The application now prevents this by
saving and restoring the browser scroll position.</li>
</ul>

<h2>Release Notes for 2005-07-19 (stand-alone version)</h2>

<p>Since the 2005-06-21 release, I have made a number of changes.  The main new features are:</p>

<ul>
<li>Full support for Internet Explorer.  This includes code to extract the location of 
user-selected text in the document.  Unfortunately, IE crashes from time to time while creating, 
updating, and deleting annotations.  The code for determining the location of the selection
is in see getSelectionRangeIE() in domutil.js;  I don't believe it's involved in the crashes
if you want to use it for something else.</li>

<li>Much refactoring to reduce the use of Javascript closures and clear links between
DOM and Javascript objects.  This is to prevent IE from leaking memory, and may have
improved (though not solved) the crash situation.  Part of this involved reducing the
scope of changes to the document when annotations are modified (e.g., when an annotation
is deleted other annotations are not redrawn).  This clean-up is ongoing.</li>

<li>Smart Copy for Firefox.  Ordinary copy-paste operations using the mouse include additional
information about the source of the copied text.</li>

<li>Partial support for annotations by multiple users.  A small icon next to the x button
(which deletes an annotation) can be toggled between public and private states.  However,
this has no other effect in the stand-alone implementation, but the Moodle version uses
it to provide the ability to search and view annotations by other users.</li>

<li>The ability to view annotations in Safari.  Safari does not provide a way to discover
the location of a text selection, so it is not possible to create annotations.</li>

<li>A shift to the Atom 1.0 namespace for the annotation XML protocol.</li>

<li>Overlapping highlights indicate the overlap by a darker background color (it's just a
CSS trick, but I think it's cool).</li>

<li>More consistent field, parameter, and database column names.</li>
</ul>

<h2>Release Notes for 2005-07-20 (stand-alone version)</h2>

<ul>
<li>I believe I've fixed the crash on Internet Explorer.  The problem was the normalize
function in IE's DOM, which is buggy and sometimes crashes the browser.  Now, the application
simply doesn't call that function on IE.  The result should be that the text on the page
becomes increasingly fragmented, which should eventually slow down the application.  If IE
is buggy enough, it might crash it.  I need to write my own version of normalize for
Exploder</li>

<li>Better compliance with the Atom 1.0 specification, though not yet to the point where it
validates.</li>
</ul>

</body>
</html>

